package com.ido.otaclient.home;

import com.ido.otaclient.base.BasePresenter;
import com.ido.otaclient.base.BaseView;
import com.ido.otaclient.module.Device;
import com.ido.otaclient.module.Veneer;

import java.util.List;

/**
 * Copyright (c) 2019 深圳市爱都科技有限公司. All rights reserved.
 *
 * @Author: xyb
 * @CreateDate: 2020-02-24 11:49
 * @description
 */
public interface HomeContract {

    interface View extends BaseView<Presenter> {//UI

        /**
         * 是否显示任务名称
         * @param isVisible
         */
        void showTaskName(boolean isVisible);

        /**
         * 设置任务名称
         * @param taskName
         */
        void setTaskName(String taskName);

        /**
         * 升级类型
         * @param isVisible
         */
        void showUploadType(boolean isVisible);

        /**
         * 设置任务
         * @param name
         */
        void setUploadName(String name);

        /**
         * 显示平台信息
         * @param isVisible
         */
        void showUploadPlatform(boolean isVisible);

        /**
         * 设置平台名称
         * @param name
         */
        void setUploadPlatform(String name);

        /**
         * 显示固件名称
         * @param isVisible
         */
        void showFirmwareNormal(boolean isVisible);

        /**
         * 设置基础固件名称
         * @param firmwareNormalName
         */
        void setFirmwareNameNormal(String firmwareNormalName);

        /**
         * 基础固件版本
         * @param firmwareNormalVersion
         */
        void setFirmwareVersionNormal(String firmwareNormalVersion);

        /**
         * 显示bootloader文件
         * @param isVisible
         */
        void showBootloader(boolean isVisible);

        /**
         * 设置bootloaderName 名称
         * @param bootloaderName
         */
        void setBootloaderName(String bootloaderName);

        /**
         * bootVersion 的版本
         * @param bootloaderVersion
         */
        void setBootloaderVersion(String bootloaderVersion);

        /**
         * 显示特殊固件
         * @param isVisible
         */
        void showFirmwareSpecial(boolean isVisible);

        /**
         * 设置特殊固件的版本
         * @param firmwareNameSpecial
         */
        void setFirmwareNameSpecial(String firmwareNameSpecial);

        /**
         * 特殊固件版本
         * @param firmwareVersionSpecial
         */
        void setFirmwareVersionSpecial(String firmwareVersionSpecial);

        /**
         * 显示字库文件
         * @param isVisible
         */
        void showFirmwareFont(boolean isVisible);

        /**
         * 设置字库文件名称
         * @param firmwareNameFont
         */
        void setFirmwareNameFont(String firmwareNameFont);

        /**
         * 字库文件版本
         * @param firmwareVersionFont
         */
        void setFirmwareVersionFont(String firmwareVersionFont);

        /**
         * 显示新固件
         * @param isVisible
         */
        void showFirmwareNew(boolean isVisible);

        /**
         * 设置新固件名称
         * @param firmwareNameNew
         */
        void setFirmwareNameNew(String firmwareNameNew);

        /**
         * 显示新固件版本号
         * @param
         */
        void setFirmwareFontVersionNew(String firmwareFontVersionNew);

        /**
         * 设置开始任务的名称
         * @param textBtnStartTask
         */
        void setTextBtnStartTask(String textBtnStartTask);

        /**
         * 获得开始任务的文本
         * @return
         */
        String getTextBtnStartTask();

        /**
         * 显示弹出进度框
         */
        void showLoadingDialog();

        /**
         * 隐藏进度框
         */
        void hideLoadingDialog();

        /**
         * 设置设备数量
         * @param deviceCount
         */
        void sendDeviceCount(int deviceCount);

        /**
         * 显示连接设备的数量
         */
        void setDeviceCount(int count);

        /**
         * 设置显示数量的颜色
         * @param color
         */
        void setDeviceCountColor(int color);

        /**
         * 发现单板的数量
         * @param count
         */
        void setVeneerCount(int count);

        /**
         * 设置单板的颜色
         * @param color
         */
        void setVeneerColor(int color);

        /**
         * 设置全局的设备集合
         */
        void sendDeviceList(List<Device> deviceList);

        /**
         * 设备集合
         * @param veneerList
         */
        void sendVeneerList(List<Veneer> veneerList);

        /**
         * 启动定时器
         */
        void startTimer();

        /**
         * 结束定时器
         */
        void stopTimer();

        /**
         * 是否可见
         * @param isVisible
         */
        void showProgress(boolean isVisible);

        /**
         * 获得设备列表
         * @return
         */
        List<Veneer> getVeneerList();

        /**
         * 设备列表
         * @return
         */
        List<Device> getDeviceList();

        /**
         * 升级中的设备
         * @param count
         */
        void setUpgradeCount(int count);

        /**
         * 升级成功的设备
         * @param count
         */
        void setSuccessCount(int count);

        /**
         * 设置失败的数量
         * @param count
         */
        void setFailCount(int count);

        /**
         * 显示信息
         * @param message
         */
        void showMessage(String message);

        /**
         * 获得升级中的数量
         * @return
         */
        String getUpgrageCount();

        /**
         * 取消升级任务
         */
        void showConfirmCancelTask();

        /**
         * 查找成功的设备
         * @param isVisible
         */
        void showSearchSuccess(boolean isVisible);

        /**
         * 将文字转换成语音
         * @param text
         */
        void showTextToTTS(String text);

        /**
         * 去配置信息
         */
        void setToConfig(boolean isConfig,boolean mIsUpgradeComplete);

        /**
         * 设置设备id
         * @param deviceId
         */
        void setDeviceId(String deviceId);

        /**
         * 设置设备id
         * @return
         */
        String getDeviceId();

        /**
         * 设置是否可见
         * @param isVisible
         */
        void showStartConfig(boolean isVisible);

     }

    interface Presenter extends BasePresenter {//功能

        /**
         * 获取配置信息
         */
        void getConfigInfo();

        /**
         * 开始任务或关闭任务
         * @param veneerList
         */
        void toStartTask(List<Veneer> veneerList,String taskName);

        /**
         * 获得升级的状态 单板的状态和设备的状态
         */
        void getVeneerStatus(List<Veneer> veneerList,List<Device> deviceList);

        /**
         * 显示设备信息
         * @param mDeviceList
         */
        void showDeviceList(List<Device> mDeviceList);

        /**
         * 取消任务
         * @param veneerList
         */
        void stopTask(List<Veneer> veneerList);

        /**
         * 查找成功
         * @param veneerList
         * @param deviceList
         */
        void searchTask(List<Veneer> veneerList,List<Device> deviceList);

        /**
         * 是否是配置还是升级中
         * @param isConfig 配置则允许配置
         */
        void confirmConfig(boolean isConfig);

    }

}
